package com.ias.common.request;

import lombok.Data;

import java.io.Serial;
import java.io.Serializable;

/**
 * 分页请求参数 - 基于MyBatis-Plus 3.5.9优化
 * 
 * @author IAS Team
 * @since 1.0.0
 */
@Data
public class PageRequest implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    
    /**
     * 当前页码，默认第1页
     */
    private Long current = 1L;
    
    /**
     * 每页大小，默认10条
     */
    private Long size = 10L;
    
    /**
     * 搜索关键词
     */
    private String keyword;
    
    /**
     * 排序字段
     */
    private String sortField;
    
    /**
     * 排序方向：asc, desc
     */
    private String sortOrder = "desc";
    
    /**
     * 验证并修正分页参数
     */
    public void validate() {
        if (current == null || current < 1) {
            current = 1L;
        }
        if (size == null || size < 1) {
            size = 10L;
        }
        // 限制最大每页数量，防止恶意查询
        if (size > 1000) {
            size = 1000L;
        }
    }
    
    /**
     * 获取验证后的当前页码
     */
    public Long getCurrentSafe() {
        validate();
        return current;
    }
    
    /**
     * 获取验证后的每页大小
     */
    public Long getSizeSafe() {
        validate();
        return size;
    }
    
    /**
     * 是否有搜索关键词
     */
    public boolean hasKeyword() {
        return keyword != null && !keyword.trim().isEmpty();
    }
    
    /**
     * 获取处理后的搜索关键词
     */
    public String getKeywordSafe() {
        return hasKeyword() ? keyword.trim() : null;
    }
} 